๋ํ์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ฌ์ธ Vite์ Webpack์ ๊ธฐ๋ฅ, ์ฑ๋ฅ, ๊ตฌ์ฑ ๋ฐ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฌ์ธต ๋น๊ตํ์ฌ ํ๋ก์ ํธ์ ์ ํฉํ ๋๊ตฌ๋ฅผ ์ ํํ ์ ์๋๋ก ๋์ต๋๋ค.
ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ฌ: Vite vs Webpack - ์ข ํฉ ๋น๊ต
๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ฌ๋ ํ๋ก ํธ์๋ ์์ฐ์ ์ต์ ํํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ค๋๋ ๊ฐ์ฅ ๋ํ์ ์ธ ๋ ๋ฒ๋ค๋ฌ๋ Vite์ Webpack์ ๋๋ค. ์ด ์ข ํฉ ๋น๊ต์์๋ ๋ ๋๊ตฌ์ ๊ธฐ๋ฅ, ์ฑ๋ฅ, ๊ตฌ์ฑ ๋ฐ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํ์ํ์ฌ ํ๋ก์ ํธ์ ์ ํฉํ ๋๊ตฌ๋ฅผ ์ ํํ๋ ๋ฐ ํ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ฌ๋ ๋ฌด์์ธ๊ฐ?
์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ฌ๋ ๋ค์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋๊ณผ ๊ทธ ์์กด์ฑ์ ๊ฐ์ ธ์ ์น ๋ธ๋ผ์ฐ์ ์์ ํจ์จ์ ์ผ๋ก ๋ก๋ํ ์ ์๋ ๋จ์ผ ํ์ผ ๋๋ ํ์ผ ์งํฉ(๋ฒ๋ค)์ผ๋ก ํจํค์งํ๋ ๋๊ตฌ์ ๋๋ค. ์ด ๊ณผ์ ์๋ ์ข ์ข ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ๋ชจ๋ ํด์: ์ฌ๋ฌ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ ๊ฐ์ ์์กด์ฑ์ ์ฐพ์ ํด๊ฒฐํฉ๋๋ค.
- ์ฝ๋ ๋ณํ: ๋ธ๋ผ์ฐ์ ์ ๋ง๊ฒ ์ฝ๋๋ฅผ ์ต์ ํํ๊ธฐ ์ํด ํธ๋์คํ์ผ๋ง(์: ES6+๋ฅผ ES5๋ก ๋ณํ) ๋ฐ ์ต์ํ์ ๊ฐ์ ๋ณํ์ ์ ์ฉํฉ๋๋ค.
- ์์ฐ ์ต์ ํ: CSS, ์ด๋ฏธ์ง, ํฐํธ์ ๊ฐ์ ๋ค๋ฅธ ์์ฐ์ ์ฒ๋ฆฌํ๋ฉฐ, ์ข ์ข ์ด๋ฏธ์ง ์์ถ ๋ฐ CSS ์ต์ํ์ ๊ฐ์ ์ต์ ํ ๊ธฐ์ ์ ํฌํจํฉ๋๋ค.
- ์ฝ๋ ๋ถํ : ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ํ์์ ๋ฐ๋ผ ๋ก๋ํ ์ ์๋ ๋ ์์ ์ฒญํฌ๋ก ๋๋์ด ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํฉ๋๋ค.
Vite ์๊ฐ
Vite("๋น ๋ฅด๋ค"๋ ์๋ฏธ์ ํ๋์ค์ด, /vit/๋ก ๋ฐ์)๋ ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด ๊ฐ๋ฐ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋ ์ฐจ์ธ๋ ํ๋ก ํธ์๋ ๋๊ตฌ์ ๋๋ค. Vue.js์ ์ฐฝ์์์ธ Evan You๊ฐ ๋ง๋ค์์ผ๋ฉฐ, Vite๋ ๋ค์ดํฐ๋ธ ES ๋ชจ๋์ ํ์ฉํ๊ณ ๊ฐ๋ฐ์ ์ํด ๋ธ๋ผ์ฐ์ ์์ฒด์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ ์ด์ฉํฉ๋๋ค. ํ๋ก๋์ ๋น๋์ ๊ฒฝ์ฐ Vite๋ ๋ด๋ถ์ ์ผ๋ก Rollup์ ์ฌ์ฉํ์ฌ ์ต์ ํ๋๊ณ ํจ์จ์ ์ธ ๋ฒ๋ค์ ๋ณด์ฅํฉ๋๋ค.
Vite์ ์ฃผ์ ํน์ง
- ์ฆ๊ฐ์ ์ธ ์๋ฒ ์์: Vite๋ ๋ค์ดํฐ๋ธ ES ๋ชจ๋์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ ์ค ๋ฒ๋ค๋ง์ ํผํจ์ผ๋ก์จ ํ๋ก์ ํธ ํฌ๊ธฐ์ ๊ด๊ณ์์ด ๊ฑฐ์ ์ฆ๊ฐ์ ์ธ ์๋ฒ ์์ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค.
- ํซ ๋ชจ๋ ๊ต์ฒด(HMR): Vite๋ ๋๋๋๋ก ๋น ๋ฅธ HMR์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ ์ฒด ํ์ด์ง ์๋ก๊ณ ์นจ ์์ด ๊ฑฐ์ ์ฆ์ ๋ธ๋ผ์ฐ์ ์์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ ์ ์๊ฒ ํฉ๋๋ค.
- ์ต์ ํ๋ ํ๋ก๋์ ๋น๋: Vite๋ ๊ณ ๋๋ก ์ต์ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ฌ์ธ Rollup์ ์ฌ์ฉํ์ฌ ์ฝ๋ ๋ถํ , ํธ๋ฆฌ ์์ดํน, ์์ฐ ์ต์ ํ์ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ถ ํ๋ก๋์ ์ฉ ๋ฒ๋ค์ ์์ฑํฉ๋๋ค.
- ํ๋ฌ๊ทธ์ธ ์ํ๊ณ: Vite๋ ๋ค์ํ ํ๋ ์์ํฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ๋ฅผ ์ง์ํ๋๋ก ๊ธฐ๋ฅ์ ํ์ฅํ๋ ์ฑ์ฅํ๋ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ํ๋ ์์ํฌ ๋ ๋ฆฝ์ : Vue.js ์ฐฝ์์์ ์ํด ๋ง๋ค์ด์ก์ง๋ง, Vite๋ ํ๋ ์์ํฌ์ ๊ตฌ์ ๋ฐ์ง ์์ผ๋ฉฐ React, Svelte, Preact์ ๊ฐ์ ๋ค์ํ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ๋ฅผ ์ง์ํฉ๋๋ค.
Webpack ์๊ฐ
Webpack์ ์๋ ๋์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์ธ๊ณ์ ์ฃผ์ ๋๊ตฌ์๋ ๊ฐ๋ ฅํ๊ณ ๋ค์ฌ๋ค๋ฅํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ฌ์ ๋๋ค. ๋ชจ๋ ํ์ผ(์๋ฐ์คํฌ๋ฆฝํธ, CSS, ์ด๋ฏธ์ง ๋ฑ)์ ๋ชจ๋๋ก ์ทจ๊ธํ๋ฉฐ, ์ด๋ฌํ ๋ชจ๋์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๊ณ ํจ๊ป ๋ฒ๋ค๋งํ ์ง ์ ์ํ ์ ์๊ฒ ํด์ค๋๋ค. Webpack์ ์ ์ฐ์ฑ๊ณผ ๊ด๋ฒ์ํ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ ๊ฐ๋จํ ์น์ฌ์ดํธ๋ถํฐ ๋ณต์กํ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ํ๋ก์ ํธ์ ์ ํฉํฉ๋๋ค.
Webpack์ ์ฃผ์ ํน์ง
- ๋ชจ๋ ๋ฒ๋ค๋ง: Webpack์ ํ๋ก์ ํธ์ ๋ชจ๋ ์์กด์ฑ์ ํ๋ ์ด์์ ์ต์ ํ๋ ๋ฒ๋ค๋ก ๋ฌถ์ต๋๋ค.
- ์ฝ๋ ๋ถํ : Webpack์ ์ฝ๋ ๋ถํ ์ ์ง์ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ๋ฐ๋ผ ๋ก๋ํ ์ ์๋ ๋ ์์ ์ฒญํฌ๋ก ๋๋ ์ ์์ต๋๋ค.
- ๋ก๋(Loaders): Webpack์ ๋ก๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์ ํ์ ํ์ผ(์: CSS, ์ด๋ฏธ์ง, ํฐํธ)์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ํฌํจํ ์ ์๋ ๋ชจ๋๋ก ๋ณํํฉ๋๋ค.
- ํ๋ฌ๊ทธ์ธ(Plugins): Webpack์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ณ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ํ๋ถํ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ๊ด๋ฒ์ํ ๊ตฌ์ฑ: Webpack์ ๊ณ ๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์ ๊ณตํ์ฌ ๋ฒ๋ค๋ง ํ๋ก์ธ์ค์ ๋ชจ๋ ์ธก๋ฉด์ ๋ฏธ์ธ ์กฐ์ ํ ์ ์์ต๋๋ค.
Vite vs Webpack: ์์ธ ๋น๊ต
์ด์ Vite์ Webpack์ ๋ค์ํ ์ธก๋ฉด์์ ์์ธํ๊ฒ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค:
1. ์ฑ๋ฅ
๊ฐ๋ฐ ์๋ฒ ์์ ์๊ฐ:
- Vite: Vite๋ ๋ค์ดํฐ๋ธ ES ๋ชจ๋์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ์๋ฒ ์์ ์๊ฐ์์ ํ์ํฉ๋๋ค. ๊ฐ๋ฐ ์ค ๋ฒ๋ค๋ง์ ํผํ์ฌ ๋๊ท๋ชจ ํ๋ก์ ํธ์์๋ ๊ฑฐ์ ์ฆ๊ฐ์ ์ธ ์์ ์๊ฐ์ ์๋ํฉ๋๋ค.
- Webpack: Webpack์ ๊ฐ๋ฐ ์๋ฒ ์์ ์๊ฐ์ ํนํ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์๋นํ ๋๋ฆด ์ ์์ต๋๋ค. ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฒ๋ค๋งํ ํ์์ผ ์๋น์ค๋ฅผ ์์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํซ ๋ชจ๋ ๊ต์ฒด(HMR):
- Vite: Vite๋ ๋๋๋๋ก ๋น ๋ฅธ HMR์ ์ ๊ณตํ๋ฉฐ, ์ข ์ข ๋ฐ๋ฆฌ์ด ๋จ์๋ก ๋ธ๋ผ์ฐ์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- Webpack: Webpack์ HMR์ ํนํ ๋ณต์กํ ํ๋ก์ ํธ์์ Vite์ ๋นํด ๋๋ฆด ์ ์์ต๋๋ค.
ํ๋ก๋์ ๋น๋ ์๊ฐ:
- Vite: Vite๋ ํ๋ก๋์ ๋น๋์ Rollup์ ํ์ฉํ๋ฉฐ, ์ด๋ ํจ์จ์ฑ์ผ๋ก ์ ์๋ ค์ ธ ์์ต๋๋ค. ๋น๋ ์๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ๋น ๋ฆ ๋๋ค.
- Webpack: Webpack๋ ์ต์ ํ๋ ๋น๋๋ฅผ ์์ฑํ ์ ์์ง๋ง, ํ๋ก์ ํธ์ ๊ตฌ์ฑ๊ณผ ๋ณต์ก์ฑ์ ๋ฐ๋ผ ๋น๋ ์๊ฐ์ด Vite๋ณด๋ค ๊ธธ์ด์ง ์ ์์ต๋๋ค.
์น์: Vite. Vite์ ์ฑ๋ฅ ์ด์ , ํนํ ๊ฐ๋ฐ ์๋ฒ ์์ ์๊ฐ๊ณผ HMR์์์ ์ฐ์๋ ๊ฐ๋ฐ์ ๊ฒฝํ๊ณผ ๋น ๋ฅธ ๋ฐ๋ณต์ด ์ค์ํ ํ๋ก์ ํธ์์ ํ์คํ ์น์๋ก ๋ง๋ญ๋๋ค.
2. ๊ตฌ์ฑ
Vite:
- Vite๋ ๊ตฌ์ฑ๋ณด๋ค ๊ด๋ก(convention over configuration)๋ฅผ ๊ฐ์กฐํ์ฌ ๋ ๊ฐ์ํ๋๊ณ ์ง๊ด์ ์ธ ๊ตฌ์ฑ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
- ๊ตฌ์ฑ ํ์ผ(
vite.config.js๋๋vite.config.ts)์ ์ผ๋ฐ์ ์ผ๋ก Webpack์ ๊ตฌ์ฑ๋ณด๋ค ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค. - Vite๋ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ํฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ์ ์ ๊ณตํ์ฌ ๊ด๋ฒ์ํ ์ฌ์ฉ์ ์ ์์ ํ์์ฑ์ ์ค์ฌ์ค๋๋ค.
Webpack:
- Webpack์ ๊ณ ๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ ํน์ฑ์ผ๋ก ์๋ ค์ ธ ์์ด ๋ฒ๋ค๋ง ํ๋ก์ธ์ค์ ๋ชจ๋ ์ธก๋ฉด์ ๋ฏธ์ธ ์กฐ์ ํ ์ ์์ต๋๋ค.
- ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ ์ฐ์ฑ์ ๋ณต์ก์ฑ ์ฆ๊ฐ๋ผ๋ ๋๊ฐ๋ฅผ ์น๋ฆ
๋๋ค. Webpack์ ๊ตฌ์ฑ ํ์ผ(
webpack.config.js)์ ํนํ ์ด๋ณด์์๊ฒ๋ ๋งค์ฐ ์ฅํฉํ๊ณ ๋ง์คํฐํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. - Webpack์ ๋ค์ํ ํ์ผ ์ ํ ๋ฐ ๋ณํ์ ๋ํด ๋ก๋์ ํ๋ฌ๊ทธ์ธ์ ๋ช ์์ ์ผ๋ก ์ ์ํด์ผ ํฉ๋๋ค.
์น์: Vite. Vite์ ๋ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ๊ตฌ์ฑ์ ํนํ ์ค์ ๊ท๋ชจ ํ๋ก์ ํธ์์ ์ค์ ํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ๊ทธ๋ฌ๋ Webpack์ ๊ด๋ฒ์ํ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ ๋งค์ฐ ๊ตฌ์ฒด์ ์ธ ์๊ตฌ ์ฌํญ์ด ์๋ ๋ณต์กํ ํ๋ก์ ํธ์ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
3. ํ๋ฌ๊ทธ์ธ ์ํ๊ณ
Vite:
- Vite๋ ๋ค์ํ ํ๋ ์์ํฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ๋ฅผ ์ํ ํ๋ฌ๊ทธ์ธ์ด ์ ๊ณต๋๋ ์ฑ์ฅํ๋ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- Vite ํ๋ฌ๊ทธ์ธ API๋ ๋น๊ต์ ๊ฐ๋จํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉ์ ์ ์ ํ๋ฌ๊ทธ์ธ์ ๋ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
- Vite ํ๋ฌ๊ทธ์ธ์ ์ผ๋ฐ์ ์ผ๋ก Rollup ํ๋ฌ๊ทธ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฏ๋ก ๊ธฐ์กด Rollup ์ํ๊ณ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
Webpack:
- Webpack์ ๊ฑฐ์ ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก์ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ํ ์์ ํ๋ฌ๊ทธ์ธ์ ๊ฐ์ถ ์ฑ์ํ๊ณ ๊ด๋ฒ์ํ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ฅผ ์๋ํฉ๋๋ค.
- Webpack ํ๋ฌ๊ทธ์ธ์ Vite ํ๋ฌ๊ทธ์ธ์ ๋นํด ๋ง๋ค๊ณ ๊ตฌ์ฑํ๊ธฐ๊ฐ ๋ ๋ณต์กํ ์ ์์ต๋๋ค.
์น์: Webpack. Vite์ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๊ฐ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๊ณ ์์ง๋ง, Webpack์ ์ฑ์ํ๊ณ ๊ด๋ฒ์ํ ์ํ๊ณ๋ ํนํ ์ ๋ฌธ์ ์ธ ๊ธฐ๋ฅ์ด ํ์ํ ํ๋ก์ ํธ์์ ์ฌ์ ํ ์๋นํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
4. ํ๋ ์์ํฌ ์ง์
Vite:
- Vite๋ ํ๋ ์์ํฌ์ ๋ ๋ฆฝ์ ์ด๋ฉฐ Vue.js, React, Svelte, Preact๋ฅผ ํฌํจํ ๋ค์ํ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ๋ฅผ ์ง์ํฉ๋๋ค.
- Vite๋ ์ธ๊ธฐ ์๋ ํ๋ ์์ํฌ๋ฅผ ์ํ ๊ณต์ ํ ํ๋ฆฟ๊ณผ ํตํฉ์ ์ ๊ณตํ์ฌ ์ฝ๊ฒ ์์ํ ์ ์๋๋ก ํฉ๋๋ค.
Webpack:
- Webpack ๋ํ ๊ด๋ฒ์ํ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
- Webpack์ ์ข ์ข ์ฌ์ ๊ตฌ์ฑ๋ Webpack ์ค์ ์ ์ ๊ณตํ๋ Create React App(CRA)์ด๋ Vue CLI์ ๊ฐ์ ๋๊ตฌ์ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
์น์: ๋ฌด์น๋ถ. Vite์ Webpack ๋ชจ๋ ํ๋ฅญํ ํ๋ ์์ํฌ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์ ํ์ ํน์ ํ๋ ์์ํฌ์ ๊ทธ ์ฃผ๋ณ์์ ์ฌ์ฉํ ์ ์๋ ๋๊ตฌ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
5. ์ฝ๋ ๋ถํ
Vite:
- Vite๋ Rollup์ ์ฝ๋ ๋ถํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ๋ฐ๋ผ ๋ก๋ํ ์ ์๋ ๋ ์์ ์ฒญํฌ๋ก ์๋ ๋ถํ ํฉ๋๋ค.
- Vite๋ ๋์ ์ํฌํธ(dynamic import)๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ๋ถํ ์ง์ ์ ์๋ณํ๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋์ ๋ถํ ํ ์ง ์ฝ๊ฒ ์ ์ํ ์ ์์ต๋๋ค.
Webpack:
- Webpack๋ ์ฝ๋ ๋ถํ ์ ์ง์ํ์ง๋ง ๋ ๋ช ์์ ์ธ ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค.
- Webpack์ ๋์ ์ํฌํธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋
SplitChunksPlugin๊ณผ ๊ฐ์ ๊ตฌ์ฑ ์ต์ ์ ํตํด ์ฝ๋ ๋ถํ ์ง์ ์ ์ ์ํ ์ ์์ต๋๋ค.
์น์: Vite. Vite์ ์ฝ๋ ๋ถํ ๊ตฌํ์ ํนํ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์์ Webpack๋ณด๋ค ์ผ๋ฐ์ ์ผ๋ก ๋ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
6. ํธ๋ฆฌ ์์ดํน
Vite:
- Vite๋ ํ๋ก๋์ ์ ์ํด Rollup์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ์ฃฝ์ ์ฝ๋(dead code)๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ํธ๋ฆฌ ์์ดํน์ ํจ๊ณผ์ ์ผ๋ก ์ํํฉ๋๋ค.
Webpack:
- Webpack๋ ํธ๋ฆฌ ์์ดํน์ ์ง์ํ์ง๋ง ์ ์ ํ ๊ตฌ์ฑ๊ณผ ES ๋ชจ๋ ์ฌ์ฉ์ด ํ์ํฉ๋๋ค.
์น์: ๋ฌด์น๋ถ. ๋ ๋ฒ๋ค๋ฌ ๋ชจ๋ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์์ ๋ ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ์ฌ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ํธ๋ฆฌ ์์ดํน์ ๋ฅ์ํฉ๋๋ค.
7. TypeScript ์ง์
Vite:
- Vite๋ ํ๋ฅญํ ๋ด์ฅ TypeScript ์ง์์ ์ ๊ณตํฉ๋๋ค. ํธ๋์คํ์ผ๋ง์ ์ํด esbuild๋ฅผ ํ์ฉํ๋๋ฐ, ์ด๋ ๊ฐ๋ฐ ๋น๋์์ ๊ธฐ์กด์
tsc์ปดํ์ผ๋ฌ๋ณด๋ค ํจ์ฌ ๋น ๋ฆ ๋๋ค.
Webpack:
- Webpack๋ TypeScript๋ฅผ ์ง์ํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก
ts-loader๋ TypeScript ํ๋ฌ๊ทธ์ธ์ด ์๋babel-loader์ ๊ฐ์ ๋ก๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์น์: Vite. esbuild๋ฅผ ์ฌ์ฉํ Vite์ ๋ด์ฅ TypeScript ์ง์์ ๋ ๋น ๋ฅด๊ณ ์ํํ ๊ฐ๋ฐ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
8. ์ปค๋ฎค๋ํฐ ๋ฐ ์ํ๊ณ
Vite:
- Vite๋ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๋ ์ปค๋ฎค๋ํฐ์ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๋ค์ํ ํ๋ก์ ํธ์์ ์ฑํ์ด ์ฆ๊ฐํ๊ณ ์์ต๋๋ค.
Webpack:
- Webpack์ ํฌ๊ณ ์ ์ ๋ฆฝ๋ ์ปค๋ฎค๋ํฐ์ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ํ๋ถํ ๋ฆฌ์์ค์ ์ง์์ ์ด์ฉํ ์ ์์ต๋๋ค.
์น์: Webpack. Webpack์ ๋ ํฌ๊ณ ์ฑ์ํ ์ปค๋ฎค๋ํฐ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค, ์ง์ ๋ฐ ํ์ฌ ํตํฉ ์ธก๋ฉด์์ ์๋นํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ Vite์ ์ปค๋ฎค๋ํฐ๋ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๊ณ ์์ต๋๋ค.
์ธ์ Vite๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น
Vite๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ํ๋ฅญํ ์ ํ์ ๋๋ค:
- ์๋ก์ด ํ๋ก์ ํธ: Vite์ ๋น ๋ฅธ ๊ฐ๋ฐ ์๋ฒ์ HMR์ ๊ฐ๋ฐ์ ๊ฒฝํ์ด ์ฐ์ ์๋๋ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๋ฐ ์ด์์ ์ ๋๋ค.
- ์ค์ ๊ท๋ชจ ํ๋ก์ ํธ: Vite์ ๊ฐ๋จํ ๊ตฌ์ฑ์ ์ค๊ฐ ์ ๋์ ๋ณต์ก์ฑ์ ๊ฐ์ง ํ๋ก์ ํธ๋ฅผ ์ค์ ํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ํ๋ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ: Vite์ ํ๋ ์์ํฌ ๋ ๋ฆฝ์ ์ธ ํน์ฑ๊ณผ ๊ณต์ ํ ํ๋ฆฟ์ Vue.js, React, Svelte์ ๊ฐ์ ์ธ๊ธฐ ์๋ ํ๋ ์์ํฌ์ ์ฝ๊ฒ ํตํฉํ ์ ์๊ฒ ํฉ๋๋ค.
- ์๋์ ์ฑ๋ฅ์ ์ฐ์ ์ํ๋ ํ๋ก์ ํธ: ๊ฐ๋ฐ ๋ฐ ํ๋ก๋์ ์์ Vite์ ์ฑ๋ฅ ์ด์ ์ ์๋๊ฐ ์ค์ํ ํ๋ก์ ํธ์ ํ๋ฅญํ ์ ํ์ด ๋ฉ๋๋ค.
- ๊ฐ์ํ๋ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ์ค์ํ๋ ํ: Vite์ '๊ตฌ์ฑ๋ณด๋ค ๊ด๋ก' ์ ๊ทผ ๋ฐฉ์์ ํ์ด ๋ ํจ์จ์ ์ด๊ณ ์ผ๊ด๋ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ฌ์ฉ ์์: ๋ ์ผ ๋ฒ ๋ฅผ๋ฆฐ์ ํ ์๊ท๋ชจ ํ์ด Vue.js๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ๋ง์ผํ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๊ณ ์์ต๋๋ค. ๊ทธ๋ค์ ๋น ๋ฅธ ๊ฐ๋ฐ ๊ฒฝํ๊ณผ ์ต์ํ์ ๊ตฌ์ฑ ์ค๋ฒํค๋๋ฅผ ์ํฉ๋๋ค. Vite๋ ์ด ํ๋ก์ ํธ์ ํ๋ฅญํ ์ ํ์ด ๋ ๊ฒ์ ๋๋ค.
์ธ์ Webpack์ ์ฌ์ฉํด์ผ ํ ๊น
Webpack์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ข์ ์ ํ์ ๋๋ค:
- ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ: Webpack์ ๊ด๋ฒ์ํ ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ๊ณผ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ ๋งค์ฐ ๊ตฌ์ฒด์ ์ธ ์๊ตฌ ์ฌํญ์ด ์๋ ํ๋ก์ ํธ์ ์ ํฉํฉ๋๋ค.
- ๋ ๊ฑฐ์ ์ฝ๋๊ฐ ์๋ ํ๋ก์ ํธ: Webpack์ ์ค๋๋ ์ฝ๋๋ฒ ์ด์ค์ ๋นํ์ค ๋ชจ๋ ํ์์ ์ฒ๋ฆฌํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- ํน์ํ ๊ธฐ๋ฅ์ด ํ์ํ ํ๋ก์ ํธ: Webpack์ ๋ฐฉ๋ํ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ ๊ฑฐ์ ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก์ ๋ํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
- Webpack ์ฌ์ฉ ๊ฒฝํ์ด ์๋ ํ: ํ์ด ์ด๋ฏธ Webpack์ ์ต์ํ๋ค๋ฉด Vite๋ก ์ ํํ๋ ๊ฒ๋ณด๋ค ๊ธฐ์กด ๋๊ตฌ๋ฅผ ๊ณ ์ํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
- ๋น๋ ์ฌ์ฉ์ ์ ์๊ฐ ๊ฐ์ฅ ์ค์ํ ํ๋ก์ ํธ: Webpack์ ๋น๋ ํ๋ก์ธ์ค์ ๋ํด ๋ ์ธ๋ถํ๋ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฌ์ฉ ์์: ์ผ๋ณธ ๋์ฟ์ ํ ๋๊ธฐ์ ์ด React๋ก ๊ตฌ์ถ๋ ๋ณต์กํ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ง ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ทธ๋ค์ ๋ค์ํ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ์ฉ์ ์ ์ ๋ชจ๋์ ํตํฉํด์ผ ํ๋ฉฐ, ๊ณ ๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ ๋น๋ ํ๋ก์ธ์ค๊ฐ ํ์ํฉ๋๋ค. Webpack์ ์ด ํ๋ก์ ํธ์ ์ ํฉํ ์ ํ์ด ๋ ๊ฒ์ ๋๋ค.
๋ง์ด๊ทธ๋ ์ด์ ๊ณ ๋ ค์ฌํญ
Webpack์์ Vite๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ฉด ์ฑ๋ฅ์์ ์ด์ ์ ์ป์ ์ ์์ง๋ง ์ ์คํ ๊ณํ์ด ํ์ํฉ๋๋ค.
- ๊ตฌ์ฑ ๋ณ๊ฒฝ: Vite๋ Webpack๊ณผ ๋ค๋ฅธ ๊ตฌ์ฑ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
webpack.config.jsํ์ผ์vite.config.js๋๋vite.config.tsํ์ผ๋ก ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค. - ๋ก๋ ๋ฐ ํ๋ฌ๊ทธ์ธ ๊ต์ฒด: Vite๋ ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ ์ํ๊ณ๋ฅผ ์ฌ์ฉํฉ๋๋ค. Webpack ๋ก๋ ๋ฐ ํ๋ฌ๊ทธ์ธ์ ๋ํ Vite ๋ฑ๊ฐ๋ฌผ์ ์ฐพ์์ผ ํฉ๋๋ค. Vite๋ ํ๋ก๋์ ๋น๋์ Rollup์ ํ์ฉํ๋ฏ๋ก Rollup ๊ธฐ๋ฐ ํ๋ฌ๊ทธ์ธ์ ์ฐพ์๋ณด์ธ์.
- ์์กด์ฑ ๊ด๋ฆฌ: ํ๋ก์ ํธ์ ๋ชจ๋ ์์กด์ฑ์ด Vite์ ํธํ๋๋์ง ํ์ธํ์ธ์.
- ์ฝ๋ ๋ณ๊ฒฝ: ๊ฒฝ์ฐ์ ๋ฐ๋ผ, ํนํ Webpack ํน์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Vite์ ์ํํ๊ฒ ์๋ํ๋๋ก ์ฝ๋๋ฅผ ์กฐ์ ํด์ผ ํ ์ ์์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก, Vite์์ Webpack์ผ๋ก์ ๋ง์ด๊ทธ๋ ์ด์ ๋ ๊ฐ๋ฅํ์ง๋ง Vite์ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ ํธ์์ฑ์ ๊ณ ๋ คํ ๋ ๋ ์ผ๋ฐ์ ์ ๋๋ค. Webpack์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒฝ์ฐ ๊ตฌ์ฑ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๊ณ ๋น๋ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์์ต๋๋ค. ์์ ๋จ๊ณ๋ฅผ ์ญ์ผ๋ก ์ํํ๋ฉฐ Webpack ๊ตฌ์ฑ, ๋ก๋ ๋ฐ ํ๋ฌ๊ทธ์ธ์ ์ง์คํ์ธ์.
๋ฒ๋ค๋ฌ๋ฅผ ๋์ด: ๋ค๋ฅธ ํ๋ ๋๊ตฌ๋ค
Vite์ Webpack์ด ์ง๋ฐฐ์ ์ด์ง๋ง, ๊ฐ๊ฐ ํน์ ๊ฐ์ ์ ๊ฐ์ง ๋ค๋ฅธ ๋ฒ๋ค๋ฌ์ ๋น๋ ๋๊ตฌ๋ ์กด์ฌํฉ๋๋ค:
- Parcel: ์ฌ์ฉ์ด ๋งค์ฐ ์ฝ๋๋ก ๋ชฉํํ๋ ์ ๋ก ๊ตฌ์ฑ(zero-configuration) ๋ฒ๋ค๋ฌ์ ๋๋ค.
- Rollup: ๋ฐ์ด๋ ํธ๋ฆฌ ์์ดํน ๊ธฐ๋ฅ ๋๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ์ ๊ณ ๋๋ก ์ต์ ํ๋์ด ์์ต๋๋ค. Vite๋ ํ๋ก๋์ ๋น๋์ Rollup์ ์ฌ์ฉํฉ๋๋ค.
- esbuild: Go๋ก ์์ฑ๋ ๋งค์ฐ ๋น ๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ฌ ๋ฐ ๋ฏธ๋ํ์ด์ด์ ๋๋ค. Vite๋ ๊ฐ๋ฐ ๋น๋์ esbuild๋ฅผ ํ์ฉํฉ๋๋ค.
๊ฒฐ๋ก
์ฌ๋ฐ๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ฌ๋ฅผ ์ ํํ๋ ๊ฒ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ์ต์ ํํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. Vite๋ ์ต์ํ์ ๊ตฌ์ฑ์ผ๋ก ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด ๊ฐ๋ฐ ๊ฒฝํ์ ์ ๊ณตํ์ฌ ์๋ก์ด ํ๋ก์ ํธ์ ์ค์ ๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ ์ ๋๋ค. ๋ฐ๋ฉด์ Webpack์ ํน์ํ ์๊ตฌ ์ฌํญ์ด ์๋ ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ์ ์ ํฉํ ๊ณ ๋๋ก ๊ตฌ์ฑ ๊ฐ๋ฅํ๊ณ ๋ค์ฌ๋ค๋ฅํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
๊ถ๊ทน์ ์ผ๋ก ์ต์์ ์ ํ์ ํ๋ก์ ํธ์ ํน์ ์๊ตฌ ์ฌํญ๊ณผ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์ด ๋น๊ต์์ ๋ ผ์๋ ์์๋ฅผ ๊ณ ๋ คํ๊ณ , ๋ ๋๊ตฌ๋ฅผ ๋ชจ๋ ์คํํด๋ณด๊ณ , ํ์ ๊ธฐ์ ๊ณผ ํ๋ก์ ํธ ๋ชฉํ์ ๊ฐ์ฅ ์ ๋ง๋ ๊ฒ์ ์ ํํ์ธ์. ํ๋ก ํธ์๋ ๋๊ตฌ์ ์งํํ๋ ํ๊ฒฝ์ ์ฃผ์ํ์ธ์. ์๋ก์ด ๋๊ตฌ์ ๊ธฐ์ ์ด ๋์์์ด ๋ฑ์ฅํ๋ฉฐ, ์ต์ ์ ๋ณด๋ฅผ ์ ์งํ๋ ๊ฒ์ด ํ๋์ ์ด๊ณ ๊ณ ์ฑ๋ฅ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ์ด์ ์ ๋๋ค.
์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ:
- ์๋ก์ด ํ๋ก์ ํธ๋ ์๊ท๋ชจ ํ์ ๊ฒฝ์ฐ, ๋น ๋ฅธ ๊ฐ๋ฐ๊ณผ ์ฌ์ด ๊ตฌ์ฑ์ ์ํด Vite๋ก ์์ํ์ธ์.
- ๋ณต์กํ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, Webpack์ด ํ์ํ ์ฌ์ฉ์ ์ ์ ๋ฐ ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋ฐ์ดํฐ ๊ธฐ๋ฐ ๊ฒฐ์ ์ ์ํด ํน์ ํ๋ก์ ํธ์์ ๋ ๋ฒ๋ค๋ฌ์ ๋น๋ ์๊ฐ๊ณผ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ๋ฒค์น๋งํนํ์ธ์.
- Vite์ Webpack ๋ชจ๋ ํ๋ฐํ๊ฒ ๊ฐ๋ฐ๋๊ณ ์์ผ๋ฏ๋ก ์ต์ ๋ฒ์ ์ ๋ํ ์ ๋ณด๋ฅผ ๊ณ์ ํ์ธํ์ธ์.